package Object;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author jklu
 * 对象--->Bing返回的一页，包含一页中所有图片对象
 */

public class BingPic {
    List<Pic> picList = new ArrayList<Pic>();

    public List<Pic> getPicList() {
        return picList;
    }

    /**
     * 构造函数
     * @param document  调用Bing接口后，返回的原始信息，Bing返回的为HTML，图片信息藏在JS中
     * @param start     当前页，图片的起始地址
     */

    public BingPic(String document,int start){
        //属性初始化
        int number = 0 ,width = 0 ,height = 0,count = 1;
        String url = null,title = null,type = null;
        //JSoup解析
        Document doc = Jsoup.parse(document);
        Elements elements = doc.getElementsByClass("iuscp varh");

        for (Element e:elements) {
            //设置序号
            number = start+count++;
            //获取源地址和标题，其内容会被转化为Json数据体
            String temp = e.select(".imgpt").select(".iusc").attr("m");
//            System.out.println(temp);
            //Json解析
            JSONObject jsonObject = JSON.parseObject(temp);
            //得到源地址
            url = jsonObject.getString("murl");
            //去除特殊符号
            String regex = "[`~!@#$%^&*()_\\-+=<>?:\"{}|,.\\\\/;']";
            //去除HTML标签
            title = jsonObject.getString("t").replaceAll("<\\\\?/?\\w+>","").replaceAll(regex,"");
            if(title.isEmpty())
                title = String.valueOf(number)+String.valueOf(width)+String.valueOf(height);

            //获取其他信息，高度、宽度、格式
            String temp2 = e.select(".nowrap").text();
//            System.out.println(temp2);
            //正则将3项信息筛选
            String pattern = "(\\d+)\\s*x\\s*(\\d+)\\s*\\S*\\s*(\\w*)";
            Pattern p2 = Pattern.compile(pattern);
            Matcher m2 = p2.matcher(temp2);
            while(m2.find()){
                width = Integer.parseInt(m2.group(1));
                height = Integer.parseInt(m2.group(2));
                type = m2.group(3);
            }
            picList.add(new Pic(number,width,height,title,url,type));
        }
    }
}
